/**
 * 此文件作为generator的核心入口
 * 需要导出一个继承自yeomen generator的类型
 * yeomen generator在工作时自动调用我们在此类型中定义的一些生命周期方法
 * 我们可以在这些方法中调用父类提供的方法来实现一些功能 
 */
const Geneator = require('yeoman-generator')
module.exports = class extends Geneator{
    writing(){
        //yeomen自动在文件生成阶段调用此方法
        //这里尝试往项目目录中写入文件
        // this.fs.write(
        //     this.destinationPath('temp.txt'),
        //     Math.random().toString()
        // )

        // 模板文件路径
        const tmpl = this.templatePath('foo.txt')
        // 输出目标路径
        const output = this.destinationPath('foo.txt')
        // 模板数据上下文
        const context = { title: 'Hello zce~', success: false }

        this.fs.copyTpl(tmpl, output, context)
    }
    prompting () {
        // yeoman 在询问用户环节会自动调用此方法
        // 在此方法中可以调用父类的 prompt() 方法发出对用户的命令行询问
        return this.prompt([
          {
            type: 'input',
            name: 'name',
            message: 'Your project name',
            default: this.appname // appname为项目生成目录名称
          }
        ])
        .then(answers => {
          // answers => { name: 'user input value' }
          this.answers = answers
        })
      }
}